//package com.beetobe.main;
//
//import java.io.IOException;
//import java.util.logging.Level;
//import java.util.logging.Logger;
//
//import android.accounts.Account;
//import android.accounts.AccountManager;
//import android.accounts.AccountManagerCallback;
//import android.accounts.AccountManagerFuture;
//import android.accounts.AuthenticatorException;
//import android.accounts.OperationCanceledException;
//import android.app.Activity;
//import android.content.Context;
//import android.content.Intent;
//import android.content.SharedPreferences;
//import android.os.Bundle;
//import android.util.Log;
//
//import com.beetobe.callib.CalendarLibHelper;
//import com.beetobe.callib.ClientCredentials;
//import com.google.api.client.extensions.android.http.AndroidHttp;
//import com.google.api.client.googleapis.GoogleHeaders;
//import com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager;
//import com.google.api.client.googleapis.services.GoogleKeyInitializer;
//import com.google.api.client.http.HttpRequest;
//import com.google.api.client.http.HttpRequestInitializer;
//import com.google.api.client.http.HttpTransport;
//import com.google.api.client.json.JsonFactory;
//import com.google.api.client.json.gson.GsonFactory;
//
//public class CheckAuth {
//
//	String authToken;
//	final HttpTransport transport = AndroidHttp.newCompatibleTransport();
//
//	final JsonFactory jsonFactory = new GsonFactory();
//
//	static final String PREF_ACCOUNT_NAME = "accountName";
//	private static final int REQUEST_AUTHENTICATE = 0;
//	static final String PREF_AUTH_TOKEN = "authToken";
//	private static final String AUTH_TOKEN_TYPE = "cl";
//	SharedPreferences settings;
//	final String TAG = "AUTH";
//	GoogleAccountManager accountManager;
//	Context mContext;
//	private static final Level LOGGING_LEVEL = Level.OFF;
//
//	public CheckAuth(Context context) {
//		// 占쏙옙占썩서 占쏙옙 占쌘듸옙
//		mContext = context;
//		HttpRequestInitializer requestInitializer = new HttpRequestInitializer() {
//
//			public void initialize(HttpRequest request) throws IOException {
//				request.getHeaders().setAuthorization(
//						GoogleHeaders.getGoogleLoginValue(authToken));
//			}
//		};
//
//		CalendarLibHelper.client = new com.google.api.services.calendar.Calendar.Builder(
//				transport, jsonFactory, requestInitializer)
//				.setApplicationName(
//				/* "Google-CalendarAndroidSample/1.0" */"Bee To Be")
//				.setJsonHttpRequestInitializer(
//						new GoogleKeyInitializer(ClientCredentials.KEY))
//				.build();
//
//		settings = getPreferences(MODE_PRIVATE);
//		CalendarLibHelper.accountName = settings.getString(PREF_ACCOUNT_NAME,
//				null);
//		authToken = settings.getString(PREF_AUTH_TOKEN, null);
//		Logger.getLogger("com.google.api.client").setLevel(LOGGING_LEVEL);
//		accountManager = new GoogleAccountManager(context);
//
//	}
//
//	void gotAccount() {
//		// 이미 앱과 연동된 구글계정을 가져온다. 없으면 선택하도록 한다.
//		Account account = accountManager
//				.getAccountByName(CalendarLibHelper.accountName);
//
//		if (account == null || accountManager.getAccounts().length >= 2) {
//			chooseAccount(); // 연동된 구글계정이 없을 때 chooseAccount를 통해서 계정을 선택하도록 한다.
//			return;
//		}
//		// if (authToken != null) { // 이미 Token이 주어져 있을 때
//		// onAuthToken();
//		// return;
//		// }
//
//		// AccountManagerCallBack 클래스를 새로 만들었음
//		// Google Calendar v3 API를 쓰면서 만듦.
//		// 연동된 구글계정이 존재하고 Token이 주어져 있지 않으면 아래 코드 실행(token 얻는 코드)
//		class AccountManagerCallBackClass implements
//				AccountManagerCallback<Bundle> {
//
//			public void run(AccountManagerFuture<Bundle> future) {
//				try {
//					Bundle bundle = future.getResult();
//					if (bundle.containsKey(AccountManager.KEY_INTENT)) {
//						Intent intent = bundle
//								.getParcelable(AccountManager.KEY_INTENT);
//						intent.setFlags(intent.getFlags()
//								& ~Intent.FLAG_ACTIVITY_NEW_TASK);
//						startActivityForResult(intent, REQUEST_AUTHENTICATE);
//					} else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) {
//						setAuthToken(bundle
//								.getString(AccountManager.KEY_AUTHTOKEN));
//						// onAuthToken();
//					}
//				} catch (Exception e) {
//					Log.e(TAG, e.getMessage(), e);
//				}
//			}
//		}
//		accountManager.getAccountManager().getAuthToken(account,
//				AUTH_TOKEN_TYPE, null, mContext.getApplicationContext(), new AccountManagerCallBackClass(),
//				null);
//	}
//
//	// 이미 핸드폰에 등록된 계정 중에 하나를 선택하도록 한다. 그 과정에서 사용자에게 허가를 얻는다.
//	private void chooseAccount() {
//		accountManager.getAccountManager().getAuthTokenByFeatures(
//				GoogleAccountManager.AaCCOUNT_TYPE, AUTH_TOKEN_TYPE, null,
//				mContext, null, null, new AccountManagerCallback<Bundle>() {
//
//					public void run(AccountManagerFuture<Bundle> future) {
//						Bundle bundle;
//						try {
//							bundle = future.getResult();
//							setAccountName(bundle
//									.getString(AccountManager.KEY_ACCOUNT_NAME));
//							setAuthToken(bundle
//									.getString(AccountManager.KEY_AUTHTOKEN));
//							// onAuthToken(); // AsyncLoadCalendars
//						} catch (OperationCanceledException e) {
//							// user canceled
//						} catch (AuthenticatorException e) {
//							Log.e(TAG, e.getMessage(), e);
//						} catch (IOException e) {
//							Log.e(TAG, e.getMessage(), e);
//						}
//					}
//				}, null);
//	}
//
//	// 계정의 이름을 저장한다.
//	void setAccountName(String accountName) {
//		SharedPreferences.Editor editor = settings.edit();
//		editor.putString(PREF_ACCOUNT_NAME, accountName);
//		editor.commit();
//		CalendarLibHelper.accountName = accountName;
//	}
//
//	// 계정의 Auth의 Token을 저장한다.
//	void setAuthToken(String authToken) {
//		SharedPreferences.Editor editor = settings.edit();
//		editor.putString(PREF_AUTH_TOKEN, authToken);
//		editor.commit();
//		this.authToken = authToken;
//	}
//	// @Override
//	// protected void onActivityResult(int requestCode, int resultCode, Intent
//	// data) {
//	// super.onActivityResult(requestCode, resultCode, data);
//	// switch (requestCode) {
//	// case REQUEST_AUTHENTICATE:
//	// if (resultCode == RESULT_OK) {
//	// gotAccount();
//	// } else {
//	// chooseAccount();
//	// }
//	// break;
//	// }
//	// }
//
//}
